namespace Plugins.Engine.Internal
{
    using System.Collections.Generic;
    using Plugins.Interfaces;

    internal interface IPluginConfigurationManager : IPluginHostService, IPluginContainer<IPluginAssemblyConfiguration>
    {
        void Load<T>(IPluginHost host);
        void Load<T>(IPluginHost host, IPluginAssemblyConfiguration plugin);

        void Unload<T>(IPluginHost host);
        void Unload<T>(IPluginHost host, IPluginAssemblyConfiguration plugin);

        IEnumerable<IPluginAssemblyConfiguration> Loaded { get; }
        IEnumerable<IPluginObject> Objects { get; }
    }
}

